Miles Sound System SDK 7.2a

XMIDI Services

Discussion

The term ‘Extended MIDI,' or ‘XMIDI,' refers to the set of features added to the base Musical Instrument Digital Interface (MIDI) data specification by the drivers and utility programs included with the Miles Sound System's Version 2.00 release. The XMIDI standard brings many powerful features to the Miles Sound System which would otherwise be absent in a system conforming to the original MIDI standard.

Composers who are interested in getting started with XMIDI should pay particular attention to the descriptions of the Miles Sound Studio and MIDIECHO in the Tools-Reference Section, before moving on to the specific discussions of the Extended MIDI controllers below. It is strongly recommended that musicians with even the slightest programming knowledge (or interest) examine the XMIDI Services section as well, in order to gain the best possible understanding of the Miles Sound System's capabilities.

Programmers seeking to master effective Miles Sound System application design are also advised to familiarize themselves with the Tools-Reference section, followed by a perusal of the XMIDI Services section.

Also useful to both XMIDI composers and programmers would be a good understanding of the new DLS features found in the Miles Sound System. This information can be found in the DLS Services Section.

XMIDI Services
AIL_open_XMIDI_driver opens an driver handle to play XMIDI data files through.
MILES_OPEN_XMIDI_FLAGS specifies open flags for the AIL_open_XMIDI_driver function.
AIL_close_XMIDI_driver shuts down and closes a MIDI music driver which was opened by a previous call to AIL_open_XMIDI_driver.
AIL_MIDI_handle_release temporarily releases the hardware MIDI handle (the HMIDIOUT handle or the QuickTime MIDI handle) back to the system.
AIL_MIDI_handle_reacquire attempts to reacquire the hardware MIDI handle (the HMIDIOUT handle or the QuickTime MIDI handle) from the system.
AIL_set_XMIDI_master_volume establishes an overall `master volume` value which is used to scale the volumes of all subsequent XMIDI note events in all sequences.
AIL_XMIDI_master_volume returns the current XMIDI master volume setting in use.
AIL_allocate_sequence_handle searches for a free sequence handle and returns it to the application for use in the playback of XMIDI audio data.
AIL_release_sequence_handle frees a sequence handle for later allocation by AIL_allocate_sequence_handle.
AIL_init_sequence prepares a sequence handle for playback of XMIDI sequence data, and allows the application to specify the starting address and sequence number of the XMIDI sequence to be played.
AIL_start_sequence starts playback of a sequence from its beginning.
AIL_stop_sequence stops playback of a sequence.
AIL_resume_sequence resumes playback of a sequence which was previously stopped.
AIL_end_sequence terminates playback of a sequence, setting its status to SEQ_DONE<*MILES_SEQUENCE_STATUS>.
AIL_set_sequence_tempo specifies an increase or decrease in the normal playback tempo of a sequence.
AIL_sequence_tempo returns the current relative tempo percentage for a sequence.
AIL_set_sequence_volume establishes a scaling factor for the value of each MIDI Part Volume Control Change (controller 7) event occurring in a sequence.
AIL_sequence_volume returns the current sequence volume scaling value, from 0 (minimum) to 127 (maximum).
AIL_set_sequence_loop_count arranges for a sequence to be restarted immediately upon completion, for a total of two or more iterations.
AIL_sequence_loop_count returns the number of loop iterations remaining for the given sequence.
AIL_branch_index moves a sequence's data pointers to the location of a specified XMIDI Sequence Branch Index controller.
AIL_sequence_position returns the number of beats and measures elapsed since a given XMIDI sequence began playing.
AIL_set_sequence_ms_position moves the current playback position of a sequence to the specified millisecond count.
AIL_sequence_ms_position returns the current playback position and length of the sequence in milliseconds.
AIL_set_sequence_user_data sets a value for one of eight user data entries associated with each sequence handle.
AIL_sequence_user_data retrieves a value for one of eight user data entries associated with each sequence handle.
AIL_sequence_status returns the status of a given sequence handle.
MILES_SEQUENCE_STATUS indicates the status of an XMIDI handle.
AIL_create_wave_synthesizer creates a `virtual wave synthesizer` by associating an XMIDI driver with a digital audio driver and a library file containing digital audio samples assigned to various MIDI patches.
AIL_destroy_wave_synthesizer destroys a `virtual wave synthesizer` instance created by a previous call to the AIL_create_wave_synthesizer function.
AIL_MDI_driver_type reports the MIDI synthesis technology available with a specified.
MILES_MDI_DRIVER_TYPE describes the type of DOS MIDI driver.
AIL_set_GTL_filename_prefix informs MSS of the prefix portion of all Global Timbre Library filenames which are associated with a particular application.
AIL_timbre_status checks to see if a given timbre (synthesizer instrument) is loaded.
AIL_install_timbre forces the driver to install a single timbre (synthesizer instrument), allowing it to be used for performance in a channel of an Extended MIDI (XMIDI) sequence which contains an XMIDI Patch Bank Select controller (114) with the value bank followed by a MIDI Program Change (Patch) message with the value patch.
AIL_protect_timbre prevents the timbre bank, patch from being discarded from the synthesizer memory or local timbre cache.
AIL_unprotect_timbre disables timbre protection for the timbre bank, patch, subjecting the timbre to the action of the normal timbre replacement algorithm.
AIL_active_sequence_count returns the number of currently-playing sequences.
AIL_controller_value returns any current MIDI Control Change value for any of the channels used in the specified sequence.
MILES_MIDI_VALUE specifies a MIDI controller that can queried.
AIL_channel_notes returns the number of notes currently turned `on` in a given MIDI channel.
AIL_register_prefix_callback registers an application function to be called whenever an XMIDI Callback Prefix controller (108) is encountered in a playing XMIDI sequence.
AILPREFIXCB specifies a user-defined XMIDI prefix callback.
AIL_register_trigger_callback registers an application function to be called whenever an XMIDI Callback Trigger controller (119) is encountered in a playing XMIDI sequence.
AILTRIGGERCB specifies a user-defined XMIDI trigger callback.
AIL_register_sequence_callback registers an application function to be called immediately upon completion of playback of an XMIDI sequence.
AILSEQUENCECB specifies a user-defined XMIDI end of sequence callback.
AIL_register_event_callback registers an application function to be called immediately prior to processing each XMIDI or MIDI Channel Voice message event associated with a given driver.
AILEVENTCB specifies a user-defined XMIDI event callback.
AIL_register_beat_callback registers an application function to be called each time the relative beat count changes in any sequence played with the given driver.
AILBEATCB specifies a user-defined XMIDI beat callback.
AIL_register_timbre_callback registers an application function to be called immediately prior to installing a timbre with AIL_install_timbre or AIL_init_sequence.
AILTIMBRECB specifies a user-defined XMIDI timbre installation callback.
AIL_register_ICA_array allows the application to declares an array of 128 bytes whose entries may be used to replace XMIDI or MIDI controller values whose controller events are preceded by an XMIDI Indirect Controller Prefix controller (115).
AIL_lock_channel returns an individual MIDI channel number to the application for direct MIDI message transmission, preventing any XMIDI sequence from utilizing that physical channel until its release with AIL_release_channel.
AIL_release_channel returns a MIDI channel previously locked with AIL_lock_channel to the sequence which formerly `owned` it, if any.
AIL_map_sequence_channel causes all events in a given sequence which are associated with a given MIDI channel seq_channel to be transmitted instead on a `remapped` MIDI channel new_channel.
AIL_true_sequence_channel returns the physical MIDI channel number which receives MIDI and XMIDI messages transmitted on a logical channel sequence_channel by a given sequence S.
AIL_send_channel_voice_message transmits any desired MIDI Channel Voice message on any MIDI channel.
AIL_send_sysex_message transmits a System Exclusive message to a MIDI device driver.
AIL_midiOutOpen assigns a Windows Multimedia Extensions low-level midiOut driver (or the MIDI Mapper device) to the Windows MSS API for MIDI music performance.
AIL_install_MDI_INI installs and initializes the currently selected MSS .MDI driver file for XMIDI music performance under DOS.
AIL_install_MDI_driver_file installs and initializes an MSS-compatible .MDI driver file for XMIDI music performance under DOS.

For technical support, e-mail Miles3@radgametools.com
© Copyright 1991-2007 RAD Game Tools, Inc. All Rights Reserved.